package projetoeCommerce.Dados;


import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import projetoeCommerce.Entidades.Produto;


public class DadosProdutos {
	
	public void Inserir(Produto p) throws SQLException
	{
		Connection conexao = Conexao.GetConexao();
		try {
		
		Statement stm = conexao.createStatement();
		String sql = String.format("Insert into produtos (Descricao,Preco,QuantidadeEmEstoque) values ('%s', %s, %d)", p.get_descricao(), p.get_PrecoFormatado(), p.get_quantidadeEmEstoque());
		
		System.out.println(sql);
		stm.execute(sql);
	
		}
		finally
		{
			conexao.close();
		}
	}
	
	public void Alterar(Produto p) throws SQLException
	{
		Connection conexao = Conexao.GetConexao();
		try {
		
		Statement stm = conexao.createStatement();
		String sql = String.format("Update produtos set Descricao = '%s', Preco = %s, QuantidadeEmEstoque = %d Where codProduto = %d", p.get_descricao(), p.get_PrecoFormatado(), p.get_quantidadeEmEstoque(), p.get_codigo());
		
		System.out.println(sql);
		stm.execute(sql);
		
		}
		finally
		{
			conexao.close();
		}
	}

	public void Remover(Produto p) throws SQLException
	{
		Remover(p.get_codigo());
	}
	
	public void Remover(int codigo) throws SQLException
	{
		Connection conexao = Conexao.GetConexao();
		try {
		
		Statement stm = conexao.createStatement();
		String sql = String.format("Delete produtos Where codProduto = %d", codigo);
		
		System.out.println(sql);
		stm.execute(sql);
		
		}
		finally
		{
			conexao.close();
		}
	}
	
	public Produto GetPorCodigo(int codigo) throws SQLException
	{
		Produto p = null;
		
		Connection conexao = Conexao.GetConexao();
		try {
		
		Statement stm = conexao.createStatement();
		String sql = String.format("Select * from produtos Where codProduto = %d", codigo);
		
		
		System.out.println(sql);
		ResultSet rs = stm.executeQuery(sql);
	
		
		if (rs.next()) {
			 p = ControiProdutoComORS(rs); 
		}
		
		rs.close();
		stm.close();
		
		}
		finally
		{
			conexao.close();
		}
		
		return p;
	}
	
	public HashMap<String, Produto> getTodos() throws SQLException{
		
		HashMap<String, Produto> produtos = new HashMap<String, Produto>();
		
		Connection conexao = Conexao.GetConexao();
		try {
		
		Statement stm = conexao.createStatement();
		String sql = String.format("Select * from produtos ");
		
		
		System.out.println(sql);
		ResultSet rs = stm.executeQuery(sql);
	
		
		while (rs.next()) {
			 Produto p = ControiProdutoComORS(rs);
			 produtos.put(p.get_codigo() + "", p);
		}
		
		rs.close();
		stm.close();
		
		}
		finally
		{
			conexao.close();
		}
		
		return produtos;	
	}
	
	private Produto ControiProdutoComORS(ResultSet rs) throws SQLException
	{
		Produto p = new Produto();
		  p.set_codigo(rs.getInt("CodProduto")); 
		  p.set_descricao(rs.getString("Descricao")); 
		  p.set_preco(rs.getDouble("Preco")); 
		  p.set_quantidadeEmEstoque(rs.getInt("QuantidadeEmEstoque")); 
		  
		  return p;
	}

}
